@database AssignManager.guide @author Matt Francis @(c) 1993 Matt Francis @wordwrap @node Main "Contents" @{b}@{u}ASSIGNMANAGER V1.24@{uu}@{ub} @{"Credits" link Credits} @{"Disclaimer" link Disclaimer} @{"Copyright" link Copyright} @{"Distribution" link Distribution} @{"Requirements" link Requirements} @{"Installation" link Installation} @{"Introduction" link Introduction} @{"Using AssignManager" link UsingAssignManager} @{"Acknowledgments" link Acknowledgments} @{"History" link History} @endnode @node Credits @{b}@{u}ASSIGNMANAGER V1.24@{uu}@{ub} Created by Matt Francis ReqTools by Nico Fran GUI created with GadToolsBox V2.0c This program is @{b}giftware@{ub}. I @{i}demand @{ui}no payment for this program, because I feel I have benifitted greatly from the generosity of other Amiga programmers, but the spiritually-sound among you should note that I have worked long and hard on this software. If you appreciate (and use) my efforts, you would cheer me up a lot by sending some money my way. Job offers are also welcome :-) @{i}E-Mail: @{ui}m.p.francis@newcastle.ac.uk @{i}S-Mail: @{ui}Matt Francis, 142 Tamworth Road, Fenham, Newcastle-upon-Tyne, NE4 5AN England @{i}(until July 1994) @{ui} @endnode @node Disclaimer This software comes with no warranty, either expressed or implied. The author is in no way responsible for any damage or loss that may occur due to direct or indirect usage of this software. Use this software entirely at your own risk. @endnode @node Copyright This software is freely distributable, BUT all programs and documentation are copyright 1993 Matt Francis. The ReqTools library is copyright to Nico Fran ois. Permission is NOT given to re-release this package if it has been altered in any way. @endnode @node Distribution Permission is given to include this program in a public archive (such as a BBS, FTP site or PD library) providing that all parts of the original distribution are kept intact. These are as follows: AssignManager/Assigns AssignManager/Assigns.info AssignManager/AssignManager.guide AssignManager/AssignManager.guide.info AssignManager/IMPORTANT AssignManager/IMPORTANT.info AssignManager/ConvertPrefs AssignManager/ConvertPrefs.info AssignManager/ConvertPrefs.rexx AssignManager.info Libs/reqtools.library No charge may be made for this program, other than a @{i}reasonable@{ui} copying fee, and/or the price of the media. @endnode @node Requirements AssignManager requires Kickstart V36 or above and Nico Fran ois' ReqTools library V38 or above. If you don't have ReqTools, the latest version of the library is supplied, which is all you need to use AssignManager. However, I would recommend getting the latest version of the ReqTools distribution, which includes useful things such as docs, a prefs editor and ARexx interface for ReqTools and, of course, the excellent RTPatch. @endnode @node Installation To install AssignManager, drag the "Assigns" program into the drawer where all your other prefs editors are (usually "SYS:Prefs"). Then add the following line near the start of your @{"User-Startup" link UserStartup}: Assigns USE (NOTE: If your prefs drawer is not in your DOS path, you will have to use something like "SYS:Prefs/Assigns USE" instead. This won't be a problem if you use a standard configuration.) Once you've done this, you'll never need to add an Assign command to your @{"User-Startup" link UserStartup} again! @{u}A final note:@{uu} when you first run AssignManager, you will (presumably) not have an AssignManager prefs file. If this is the case, AssignManager will automatically grab the current assigns. You should delete any system or startup-sequence assigns from those AssignManager has grabbed. If you're not sure which ones to remove, clear the whole lot and start adding your own assigns from scratch. @endnode @node UserStartup "The User-Startup file" This file is a special extension of the Startup-Sequence file that is executed when your system (re)boots. As each generation of Amigas becomes more sophisticated, the Startup-Sequence gets more complex too, and it now contains so many important commands that Commodore advise against tampering with it. In their wisdom, Commodore forsaw that people would need to add commands to the startup process, so they created the User-Startup method to allow for this. If a DOS script file called "User-Startup" exists in the S: directory, it will be executed right at the end of the Startup-Sequence, just before Workbench is started. These means that users are able to add their own Assigns or Paths and run programs and patches that can't be started via the WBStartup drawer without the need to touch the Startup-Sequence file in any way. @endnode @node Introduction Please read the @{"History" link History} section for information on changes and bug-fixes. AssignManager is a new prefs editor which handles your custom assigns in a friendly, all-encompassing way. No more fiddling with Assign commands in @{"User-Startups" link UserStartup}. Now you can use AssignManager to edit your list of assigns to your heart's content, and you can change them at the drop of a hat. AssignManager functions as a true prefs editor in every way, except you can't save different presets (I didn't think this was very necessary). The only other difference is that you must add a line near the start of your @{"User-Startup" link UserStartup} (see @{"Installation" link Installation}). @endnode @node UsingAssignManager "Using AssignManager" If you can use Commodore's prefs editors, and if you are familiar with GadTools gadgets, you should have no problems using AssignManager. AssignManager can be started from the Workbench or a Shell. Format: ASSIGNS [USE] [PUBSCREEN ] Template: USE/S,PUBSCREEN/K Native tool-types: PUBSCREEN= When the program is invoked from the Workbench, or without the "USE" switch from a Shell, AssignManager's window will appear. The window contains a number of gadgets: @{"Add" link AddGadget} @{"Top" link TopGadget} @{"Up" link UpGadget} @{"Down" link DownGadget} @{"Bottom" link BottomGadget} @{"Sort" link SortGadget} @{"Delete" link DeleteGadget} @{"Unassign" link UnassignGadget} @{"Clear" link ClearGadget} @{"Assign" link AssignGadget} @{"Type" link TypeGadget} @{"State" link StateGadget} @{"Path" link PathGadget} @{"Comment" link CommentGadget} @{"Save" link SaveGadget} @{"Use" link UseGadget} @{"Cancel" link CancelGadget} AssignManager uses the standard prefs-editor format for its menus. The @{b}Project@{ub} menu is self-explanantory. @{b}Edit menu@{ub} @{"Reset To Defaults" link EditMenuReset} @{"Last Saved" link EditMenuLastSaved} @{"Restore" link EditMenuRestore} @{"Grab Current" link EditMenuGrabCurr} Sending AssignManager a @{"CTRL-D" link Signals} will cause it to pop up. AssignManager can be killed with a @{"CTRL-C" link Signals}. @endnode @node AddGadget "Add Gadget" Keyboard shortcut = @{b}a@{ub}/@{b}A@{ub} This gadget causes a new, blank entry to be added at the bottom of the assign list. You can fill in the new assign's details with the gadgets below the list-view. See also: @{"Delete" link DeleteGadget}, @{"Unassign" link UnassignGadget}, @{"Clear" link ClearGadget} @endnode @node TopGadget "Top Gadget" Keyboard shortcut = @{b}U@{ub} This gadget causes the current entry to be moved to the very top of the assign list. See also: @{"Up" link UpGadget}, @{"Down" link DownGadget}, @{"Bottom" link BottomGadget} @endnode @node UpGadget "Up Gadget" Keyboard shortcut = @{b}u@{ub} This gadget causes the current entry to move up one line in the assign list. See also: @{"Top" link UpGadget}, @{"Down" link DownGadget}, @{"Bottom" link BottomGadget} @endnode @node DownGadget "Down Gadget" Keyboard shortcut = @{b}d@{ub} This gadget causes the current entry to move down one line in the assign list. See also: @{"Top" link TopGadget}, @{"Up" link UpGadget}, @{"Bottom" link BottomGadget} @endnode @node BottomGadget "Bottom Gadget" Keyboard shortcut = @{b}D@{ub} This gadget causes the current entry to be moved to the very bottom of the assign list. See also: @{"Top" link TopGadget}, @{"Up" link UpGadget}, @{"Down" link DownGadget} @endnode @node SortGadget "Sort Gadget" Keyboard shortcut = @{b}r@{ub}/@{b}R@{ub} This gadget causes the assign list to be sorted in alphabetical order of assign name. The Utility library's Stricmp() function is used to compare the names, so the sort will be localised if you use the Locale library. @endnode @node DeleteGadget "Delete Gadget" Keyboard shortcut = none This gadget deletes the current entry from the assign list. If a DOS assign corresponding to the entry exists, it will @{i}not @{ui}be cancelled. See also: @{"Add" link AddGadget}, @{"Unassign" link UnassignGadget}, @{"Clear" link ClearGadget} @endnode @node UnassignGadget "Unassign Gadget" Keyboard shortcut = none This gadget functions as the @{"Delete" link DeleteGadget} gadget, with the addition that if a DOS assign corresponding to the current entry exists, it will be cancelled. See also: @{"Add" link AddGadget}, @{"Delete" link UnassignGadget}, @{"Clear" link ClearGadget} @endnode @node ClearGadget "Clear Gadget" Keyboard shortcut = none This gadget causes the entire assign list to be cleared. It will @{i}not @{ui} cancel any existing assigns. Exactly the same effect can be achieved using @{"Reset To Defaults" link EditMenuReset} in the @{b}Edit@{ub} menu. See also: @{"Add" link AddGadget}, @{"Delete" link DeleteGadget}, @{"Unassign" link UnassignGadget} @endnode @node AssignGadget "Assign Gadget" Keyboard shortcut = @{b}i@{ub}/@{b}I@{ub} This string gadget is used to enter the name of an assign. When entering an assign name, you shouldn't add the trailing colon. Also, the assigns are not created as you enter them, but only when when you select @{"Use" link UseGadget} or @{"Save" link SaveGadget}. If you enter an assign name that is already in the list, one of two things can happen: if the existing assign is a @{"Simple" link AssignLock} or an @{"Add" link AssignAdd} assign, the assign you are editing will automatically be made an @{"Add" link AssignAdd} assign. Otherwise, a requester will appear warning you of conflicting incompatible assigns (you can't add multiple assigns to a @{"Path" link AssignPath} assign for example). See also: @{"Type" link TypeGadget}, @{"State" link StateGadget}, @{"Path" link PathGadget}, @{"Comment" link CommentGadget} @endnode @node TypeGadget "Type Gadget" Keyboard shortcut = @{b}y@{ub} (cycle forwards), @{b}Y@{ub} (cycle backwards) This gadget allows you to select one of the four different types of assign. Where applicable, they correspond exactly to the switches the DOS Assign command uses, and are @{"Simple" link AssignLock}, @{"Defer" link AssignLate}, @{"Path" link AssignPath} and @{"Add" link AssignAdd}. See also: @{"Assign" link AssignGadget}, @{"State" link StateGadget}, @{"Path" link PathGadget}, @{"Comment" link CommentGadget} @endnode @node StateGadget "State Gadget" Keyboard shortcut = @{b}t@{ub} (cycle forwards), @{b}T@{ub} (cycle backwards) This gadget allows you to render an assign inactive without having to delete its entry. This is useful for assigns that you occasionally need, but don't wish to have active all the time. When an assign is inactive, an asterisk will appear next to the type column in the listview. If an assign marked as inactive exists when AssignManager makes its changes to the DOS list, it will be cancelled. See also: @{"Assign" link AssignGadget}, @{"Type" link TypeGadget}, @{"Path" link PathGadget}, @{"Comment" link CommentGadget} @endnode @node PathGadget "Path Gadget" Keyboard shortcut = @{b}p@{ub} (activate gadget), @{b}P@{ub} (open path requester) This gadget is used to enter the path associated with an assign. You can enter these manually, but it is sometimes easier to click on the getfile gadget and choose a path using the path requester. See also: @{"Assign" link AssignGadget}, @{"Type" link TypeGadget}, @{"State" link StateGadget}, @{"Comment" link CommentGadget} @endnode @node CommentGadget "Comment Gadget" Keyboard shortcut = @{b}o@{ub}/@{b}O@{ub} You can use this gadget to record comments on your assigns. This handy for remembering what certain assigns are used for, and by which programs. See also: @{"Assign" link AssignGadget}, @{"Type" link TypeGadget}, @{"State" link StateGadget}, @{"Path" link PathGadget} @endnode @node SaveGadget "Save Gadget" Keyboard shortcut = @{b}s@{ub}/@{b}S@{ub} This gadget will exit AssignManager, before which the current assign list is permanently recorded so that it will be in effect for the current session and all following sessions. Also, all @{"active" link StateGadget} assigns will be created if they don't already exist. All assigns marked as @{"inactive" link StateGadget} will be cancelled if they exist. See also: @{"Use" link UseGadget}, @{"Cancel" link CancelGadget} @endnode @node UseGadget "Use Gadget" Keyboard shortcut = @{b}e@{ub}/@{b}E@{ub} This gadget will exit AssignManager, before which the current assign list is recorded so that it will be in effect for the current session, but will be gone the next time you reboot. Also, all @{"active" link StateGadget} assigns will be created if they don't already exist. All assigns marked as @{"inactive" link StateGadget} will be cancelled if they exist. See also: @{"Save" link SaveGadget}, @{"Cancel" link CancelGadget} @endnode @node CancelGadget "Cancel Gadget" Keyboard shortcut = @{b}c@{ub}/@{b}C@{ub} This gadget will exit AssignManager, discarding the current list of assigns. No changes will be made to the DOS assign list. See also: @{"Save" link SaveGadget}, @{"Use" link UseGadget} @endnode @node EditMenuReset "Edit Reset To Defaults" Keyboard shortcut = @{b}Left Amiga + D@{ub} This menu item causes the entire assign list to be cleared. It will @{i}not @{ui} cancel any existing assigns. Exactly the same effect can be achieved using the @{"Clear" link ClearGadget}. See also: @{"Clear" link ClearGadget}, @{"Delete" link DeleteGadget}, @{"Unassign" link UnassignGadget} @endnode @node EditMenuLastSaved "Edit Last Saved" Keyboard shortcut = @{b}Left Amiga + L@{ub} This menu item causes the current assign list to be replaced with the list that was stored when the @{"Save" link SaveGadget} gadget was last used. See also: @{"Save" link SaveGadget} @endnode @node EditMenuRestore "Edit Restore" Keyboard shortcut = @{b}Left Amiga + R@{ub} This menu item causes the current assign list to be replaced with the list as it was before any changes were made with the current invokation of AssignManager. It can be thought of as a sort of "undo" feature. See also: @{"Last Saved" link EditMenuLastSaved} @endnode @node EditMenuGrabCurr "Edit Grab Current" Keyboard shortcut = @{b}Left Amiga + G@{ub} This menu item will @{u}append@{uu} DOS's current set of assigns onto the end of the current assign list. All types of assign are grabbed, including multiple (@{"add" link AssignAdd}) assigns. @endnode @node AssignLock "Assign Types: Simple (Lock)" These are conventional, single-directory assigns (like using the Assign command without any switches). Also called lock assigns. @endnode @node AssignLate "Assign Types: Defer (Late)" These are equivalent to the Assign command's "DEFER" switch, and are also called late assigns. This type of assign doesn't bind immediately; the path is not locked (i.e. DOS doesn't search for it) until some reference is made to the assign. When this happens, the late assign becomes a lock assign. In simple terms, this means you can do things such as assigning to an unmounted volume without getting a requester. @endnode @node AssignPath "Assign Types: Path" These are like using the Assign command's "PATH" switch. Path assigns never bind. Instead, the path you specify is used each time the assign is referenced. For example, having assigned "LIBS:" to "DF0:Libs", getting a directory of "LIBS:" will yield a directory of the "Libs" directory of whichever disk happens to be in the drive, no matter what volume it is. @endnode @node AssignAdd "Assign Types: Add" These are equivalent to the Assign command's "ADD" switch. Whereas the other types of assign replace any other assign of the same name, an add assign extends any lock assign to cover more than one directory. Therefore you can have several physical "Libs" directories, with one assign name referring to all of them (very useful for seperating your own library collection from the system libraries for example). @endnode @node Signals If you started AssignManager synchronously from a Shell (i.e. you didn't use the Run command) you can send it a CTRL-C or CTRL-D signal just by pressing those keys. If you started the program using the Run command, or you are in another Shell window, use the Status command to find AssignManager's process number and then use the Break command to send it a signal. If you started AssignManager from the Workbench, you will have to find its process number some other way or use a task monitor program (e.g. TaskX or TaskE) to send it a signal. @endnode @node Acknowledgments Thanks to the following people: @{i}Nico Fran ois @{ui}for the ReqTools library, which makes life much more pleasant. @{i}Jan van den Baard @{ui}for GadToolsBox, which was used to design AssignManager's GUI. @{i}CygnusSoft @{ui}for CygnusEd, the fastest, most stable and @{b}best @{ub}text editor for the Amiga (and, from what I've seen, for any computer!). And it still works without problems on my A1200! @{i}Commodore @{ui}for brilliant computers which the competition just can't match. @{i}Michael Simons @{ui}and @{i}Lars @{ui}(sorry, I don't know your last name!) for their ideas and bug reports. @{i}Martin Ramsch @{ui}for several good ideas, notably the grab and unassign features and the comment field. @endnode @node History @{b}V1.24@{ub} Changed the GUI around @{i}again @{ui}and added some frills (consequently the @{"Path" link PathGadget} string gadget is now a bit longer); added @{"Clear" link ClearGadget} gadget, made Grab gadget into an item in the Edit menu, added keyboard shortcuts for @{"Type" link TypeGadget} and @{"State" link StateGadget} cycle gadgets, removed duplicate keyboard shortcuts for @{"Top" link TopGadget} and @{"Bottom" link BottomGadget} gadgets. Finally, when AssignManager is first started and it can't find a prefs file, it will automatically grab the current assigns. @{b}V1.23@{ub} Optimised the sort routine. Added ability to mark particular assigns as inactive without having to delete them. @{b}V1.22@{ub} Changed a few things round in the GUI (bigger ListView, neater buttons). @{b}V1.21@{ub} Added check for duplicate when assign name is entered. @{b}V1.20@{ub} Added grab feature, unassign feature and comment field. Consequently the appearance of the GUI has changed somewhat and the prefs file has changed due to the comment field. Also, added keyboard shortcuts for several buttons. @{b}V1.11@{ub} Updated some of the code. Button gadgets now highlight when their keyboard shortcut is used. @{b}V1.10@{ub} Window made wider again to accomodate some new gadgets, namely the sort gadget and the path getfile gadget (thanks to Michael Simons for these ideas). @{b}V1.03@{ub} ListView text now formatted with RawDoFmt(), and an incidental bug was removed. Window is now a little narrower. @{b}V1.02@{ub} Removed close gadget to make AssignManager look more like a Commodore prefs editor. Also, removed an undocumented feature (okay, bug) that caused an addressing error on <68020 machines (thanks Lars!). @{b}V1.01@{ub} The up/down and top/bottom gadgets are now disabled when the particular operation cannot be performed (this is not a bug fix, just an enhancment). Added an ID port to prevent multiple invokations. @{b}V1.00@{ub} First version. Wrote it in assembler after being dissatisfied with a similar program called AssignPrefs. @endnode